zbot变种木马wsnpoem脱壳笔记 part1
wsnpoem恶意程序是zbot木马家族的变种,经过加壳保护,我们接下来就来脱壳。
本文程序可以到附件下载,附件解压密码: www.pediy.com
注意:附件是恶意木马样本,本文提供附件仅供学习使用,学习过程务必要放在虚拟机内运行!
脱壳步骤
OD载入wsnpoem-with-rootkit.exe
这是wsnpoem解密的第一阶段,我们直接在00409D41的LEAVE处右键设下硬件执行断点,然后运行
然后我们选择菜单Debug->Hardware Breakpoint移除刚才设下的断点,向下翻到00409EDA处
我们在这行设下软件断点(F2)然后运行,停在断点处,我们取消掉这行的断点,按下Enter进入到跳转的分支去,向下翻到00412449处
在翻过了第2层解密后,00412449处所指向的004051B7便是我们的OEP,同样设下一个软件断点(F2),然后运行,停在断点处,我们取消掉这行的断点,然后步入OEP
然后向下一点,看到0040523A处,在数据窗口中转向0040FD34
可以看见,这里的这个call所调用的函数地址处是全零,这会造成程序的崩溃,因此我们可以推测在call以上的代码中有填充这个空间
我们现在边步过,边观察数据窗口中的0040FD34,看什么时候向该处填充了数据,可以很容易发现,在步过004051D2处的Call 0040AAD4后,数据窗口中填充了许多的数据
那这样看来,004051D2处的Call 0040AAD4就是将所有的函数都导入到内存空间中,而我们的0040FD34则是导入表的一部分,因此我们可以右键重新将EIP设到OEP处。
向上翻看导入表空间,貌似可能的函数地址块,也就是我们的导入表头,是从0040FB3C开始
我们也可以在ascii块中右键选择Long->Address,这样数据窗口会以地址格式进行显示,方便我们查看导入表
同样,我们向下翻看,查找导入表的结尾是在0040FEB8
这样,找到了OEP,也有导入表信息,那么我们就可以用Ollydump+ImportREC来进行脱壳,如下,点击dump保存为dump.exe
打开ImportREC,选择正在运行的wsnpoem-with-rootkit.exe,然后在OEP、RVA和SIZE处填写好我们获得的信息,然后点击Get Imports
但显然,我们的导入表函数虽然有找到,但都是无效的。所以我们需要手动修复导入表函数,因为可能在导入表内混有一些垃圾地址,所以我们需要手动进行移除,比如第一个chunk中
点击对应的shell32.dll右键显示反汇编,可以看到如下代码,显然不是一个正常的函数的代码,因此可以确定是垃圾地址。我们右键cut chunks
然后有的块显示反汇编提示read error,那么其实也是垃圾地址。依照类似的方法将所有的垃圾地址清除干净后,你就可以转储到文件,然后用IDA打开,你会发现壳已经脱干净并且导入函数也很清晰。
本文由看雪论坛 Vancir 原创
转载请注明来自看雪社区
热门阅读
点击阅读原文/read,
更多干货等着你~